📅 2021. 11. 01
Object Relation Mapping
Object Document Mapper
ORM은 관계형 DB에서 쓰고, ODM은 비관계형 DB에서 쓰는 차이가 있다. ORM/ODM을 썼을 때 얻을 수 있는 장점과 단점은 다음과 같다.
파이썬 웹프레임워크인 Django는 내장된 ORM을 통해 Python으로 SQL문 없이 CRUD 오퍼레이션 수행이 가능하다. Node.js에선 sequelize를 설치해서 JavaScript로 DB를 조작할 수 있다.
모델에 대한 정의를 백엔드 단에서 코드로 작성하기 때문에 DB에 직접 접근해서 모델을 일일이 확인할 필요가 없다.
위는 순수한 mysql 자바스크립트 클라이언트 패키지를 사용해서 구현한 코드이다. sql
을 보면 알 수 있듯이 생쿼리를 직접 타이핑해야 한다. 쿼리문이 복잡해질수록 가독성의 압박은 더욱 심해진다.
반면 sequelize
를 통해 구현한 코드는 짧고 간결해 보인다.
구현되지 않은 스펙은 지원해주지 않으면 쓸 수 없다. sequelize나 mongoose 같이 유지보수와 업데이트가 잘 되는 유명한 라이브러리에선 사실 못느껴봤다. 자체 ORM을 구현한 Headless CMS를 썼을 때 복잡한 쿼리를 사용할 수 없거나, 데이터베이스 인덱스 기능이 빠져있는 등 문제를 겪은 적이 있었다. PR을 날려서 추가하면 되지 않냐고 반문할 수도 있지만 데이터베이스에 관련된 부분은 코어한 부분이기 때문에 많은 시간과 노력이 필요하다.
INSERT INTO ...
대신에 Model.create()
를 써야한다는 걸 문서와 예제를 보고 새로 배워야 한다. 역시 세상에 공짜는 없다.